** "Türkiye'de Seçim Anketlerinin Toplam Anket Hatası Perspektifinden Bir İncelemesi" Yineleme Kodu (25 Haziran 2022)
cd "/Users/mmoral/Dropbox/Sabancı University/-ONGOING/Türkiye'de Seçim Anketlerinin Toplam Anket Hatası Perspektifinden Bir İncelemesi/-Submission/Replication/"
import excel "Aydaş vd_Türkiye'de Seçim Anketlerinin Toplam Anket Hatası Perspektifinden Bir İncelemesi_Veriseti.xlsx", sheet("Veriseti") clear firstrow

** Veri İşlemleri
drop if Örneklem=="Yok" & AnketHatası=="Yok"

replace HDP=BDP if missing(HDP) & !missing(BDP)							/* Haziran 2011 seçimleri */
drop BDP 							

egen CNN=rowtotal(s_şirket s_mod s_sponsor s_örneklem s_soru s_starih s_ağırlık s_hedef s_metot)
egen CNN_10=rowtotal(s_şirket s_mod s_sponsor s_örneklem s_soru s_starih s_ağırlık s_hedef s_metot s_hata)

egen gr=group(Şirket Seçim)
bys Şirket Seçim: gen Top_seçim=_N
distinct Şirket
distinct gr																/* Toplam 47 anket şirketi, 174 şirket-seçim grubu ve 295 seçim anketi. */

encode Şirket, gen(Şirket_ID)

gen str seçim="2011/6 Genel" 	if Seçim=="Haziran 2011 Genel"
replace seçim="2014/3 Yerel" 	if Seçim=="Mart 2014 Ankara"
replace seçim="2014/3 Yerel" 	if Seçim=="Mart 2014 İstanbul"
replace seçim="2014/8 Cumhur." 	if Seçim=="Ağustos 2014 Cumhurbaşkanlığı" 
replace seçim="2015/6 Genel" 	if Seçim=="Haziran 2015 Genel" 
replace seçim="2015/11 Genel" 	if Seçim=="Kasım 2015 Genel" 
replace seçim="2018/6 Genel" 	if Seçim=="Haziran 2018 Genel" 
replace seçim="2018/6 Cumhur." 	if Seçim=="Haziran 2018 Cumhurbaşkanlığı" 
replace seçim="2019/3 Yerel" 	if Seçim=="Mart 2019 Ankara"
replace seçim="2019/3 Yerel" 	if Seçim=="Mart 2019 İstanbul"
replace seçim="2019/6 Yerel" 	if Seçim=="Haziran 2019 İstanbul"

gen Fark=HataPayı-TAH

format Tarih %td
format SeçimTarihi %td
replace Gün=Tarih-SeçimTarihi
lab var Gün "Seçime Kalan Gün"

bys gr (Tarih): gen Anket_ID=_n
bys gr: gen Anketler=_N
bys Şirket_ID: gen Toplam_Anket=_N

encode Tür, gen(Tür_num)
tab Tür_num
recode Tür_num (1 4=1 "Yerel (N=75)") (3=2 "Genel (N=155)") (2=3 "Cumhurbaşkanlığı (N=65)"), gen(Seçim_Türü)
encode seçim, gen(seçim_num)
recode seçim_num (2=1 "Mart 2014 Yerel") (8=2 "Mart 2019 Yerel") (9=3 "Haziran 2019 Yerel (Tekrar)") (1=4 "Haziran 2011 Genel") (5=5 "Haziran 2015 Genel") (4=6 "Kasım 2015 Genel") (7=7 "Haziran 2018 Genel") (3=8 "Ağustos 2014 Cumhurbaşkanlığı") (6=9 "Haziran 2018 Cumhurbaşkanlığı"), gen(snum2)

lab var s_şirket "Anket Şirketi"
lab var s_mod "Anket Modu"
lab var s_sponsor "Sponsor"
lab var s_örneklem "Örneklem"
lab var s_soru "Soru Formu"
lab var s_starih "Saha Çalışması Tarihi"
lab var s_ağırlık "Ağırlıklandırma"
lab var s_hedef "Hedef Kitle ve Çerçeve"
lab var s_metot "Metot"
lab var s_hata "Hata Payı"

** Betimsel Tahliller
* Tablo 1
bys seçim: distinct Şirket_ID

* Tablo 2
tabstat CNN, by(seçim) stats (median mean N)

* Şekil 1
preserve
bys Şirket Seçim_Türü: gen Top_seçimtürü=_N
drop if Top_seçimtürü==1
tab Seçim_Türü

bys Şirket Seçim_Türü: egen medyan=median(CNN)
bys Şirket: egen medyan2=median(CNN)

graph hbox CNN if Seçim_Türü==1, over(Şirket, sort(medyan) descending label(labsize(tiny))) ///
box(1, fcolor(maroon%50) lwidth(vthin) lcolor(black%50)) ///
marker(1, mcolor(maroon%50) msize(small) mlwidth(none)) nofill cw ///
ytitle("") title("Yerel Seçimler (N=64)", size(small)) name(gr1, replace) nodraw
graph hbox CNN if Seçim_Türü==2, over(Şirket, sort(medyan) descending label(labsize(tiny))) ///
box(1, fcolor(maroon%50) lwidth(vthin) lcolor(black%50)) ///
marker(1, mcolor(maroon%50) msize(small) mlwidth(none)) nofill cw ///
ytitle("") title("Genel Seçimler (N=145)", size(small)) name(gr2, replace) nodraw
graph hbox CNN if Seçim_Türü==3, over(Şirket, sort(medyan) descending label(labsize(tiny))) ///
box(1, fcolor(maroon%50) lwidth(vthin) lcolor(black%50)) ///
marker(1, mcolor(maroon%50) msize(small) mlwidth(none)) nofill cw ///
ytitle("") title("Cumhurbşk. Seçimleri (N=54)", size(small)) name(gr3, replace) nodraw
graph hbox CNN, over(Şirket, sort(medyan2) descending label(labsize(tiny))) ///
box(1, fcolor(maroon%50) lwidth(vthin) lcolor(black%50)) ///
marker(1, mcolor(maroon%50) msize(small) mlwidth(none)) nofill cw ///
ytitle("") title("Tüm Seçimler (N=263)", size(small)) name(gr4, replace) nodraw
gr combine gr1 gr2 gr3 gr4, rows(1)
gr_edit .b1title.text.Arrpush Endeks Skoru
gr export "Şekil1.jpg", as(jpg) quality(100) replace
restore

* Şekil 2
twoway (scatter Fark Gün [fw=CNN] if Fark>0, msize(*.35) mcolor(black%50) mlwidth(none)) (scatter Fark Gün [fw=CNN] if Fark<0, msize(*.35) mlcolor(black%50) mlwidth(thin) msymbol(oh)) (qfitci Fark Gün, lwidth(none) clwidth(thin) clcolor(maroon%75) fcolor(maroon%50)), by(snum2, note("") legend(off) rows(3)) ytitle("Hata Payı - Ortalama Mutlak Sapma") xtitle("Seçime Kalan Gün Sayısı") ylab(-7(3.5)3.5)
gr export "Şekil2.jpg", as(jpg) quality(100) replace

** Ekler
* Ek 2
table (Şirket) (Seçim_Türü) (), stat(min CNN_10) stat(max CNN_10) nformat(%9,2f) showcounts

* Ek 3
table () (seçim) (), stat(mean s_metot s_sponsor s_şirket s_mod s_soru s_starih s_ağırlık s_örneklem s_hedef s_hata) nformat(%9,2g) showcounts

* Ek 4
gen AKP_Yan=(AKP_Pr-AKP) if !missing(AKP)
replace AKP_Yan=(Erd_Pr-Erd) if !missing(Erd)
replace AKP_Yan=(CI_Pr-CI) if !missing(CI)
bys Şirket_ID: egen ort_Yan=mean(AKP_Yan)
lab var ort_Yan "Ortalama Yanlılık (AK Parti)"

eststo m1: reg Fark CNN i.seçim_num c.Gün##c.Gün, robust
eststo m2: reg Fark CNN i.seçim_num c.Gün##c.Gün ort_Yan, robust
eststo m3: reg Fark s_şirket s_mod s_sponsor s_örneklem s_soru s_starih s_ağırlık s_hedef s_metot i.seçim_num c.Gün##c.Gün, robust
eststo m4: reg Fark s_şirket s_mod s_sponsor s_örneklem s_soru s_starih s_ağırlık s_hedef s_metot i.seçim_num c.Gün##c.Gün ort_Yan, robust

esttab m1 m2 m3 m4 using "Tablo1.csv", lab replace b(%10.3f) se stats(N r2, fmt(0 3) labels("N" "\$R^{2}\$")) ///
unstack starlevels(* 0.1 ** 0.05 *** 0.01) alignment(l) nonote nogaps nonumbers noomit nobase compress mtitle("Model.1" "Model.2" "Model.3" "Model.4") ///
coeflabels(_cons Constant) substitute(\_ _) fragment

** Metin İçerisinde Yer Alan Tahlil ve Yorumlar
alpha s_şirket s_mod s_sponsor s_örneklem s_soru s_starih s_ağırlık s_hedef s_metot s_hata, item std

gen İsabetliTahmin=Fark>0
tabstat İsabetliTahmin, by(seçim_num) stats(N mean)

forval i=1/9{
qui reg Fark c.Gün##c.Gün if seçim_num==`i'
tab seçim_num if seçim_num==`i'
margins, dydx(Gün)
}
